package com.example.controller.user;

import com.example.domain.exam.dto.ExamDTO;
import com.example.domain.exam.dto.ExamQueryDTO;
import com.example.service.user.IUserExamService;
import oj.common.core.contants.HttpConstants;
import oj.common.core.controller.BaseController;
import oj.common.core.domain.Result;
import oj.common.core.domain.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user/exam")
public class UserExamController extends BaseController {

    @Autowired
    private IUserExamService userExamService;


    //要做的是进行报名比赛
    //examId   userId
    //判断是否重复报名的话，两个条件进行查询，然后再判断是否为空
    //查询一个用户当中的竞赛，使用缓存，key：e:u:l:+userId value:examId 结构为list，头插保证新报名的竞赛在前面。
    //判断一个竞赛是否被当前用户报名，在上面的结构中拿到一个examId集合，判断当前竞赛中是否在这个集合中
    @PostMapping("/enter")
    public Result<Void> enter(@RequestHeader(HttpConstants.AUTHENTICATION) String token, @RequestBody ExamDTO examDTO){
        return toResult(userExamService.enter(token,examDTO.getExamId()));
    }


    //展示我的竞赛
    //前端传的是一queryDTO因为我的竞赛列表当中还要涉及分页查询的条件。
    @GetMapping("/list")
    public TableDataInfo list(ExamQueryDTO examQueryDTO) {
        return userExamService.list(examQueryDTO);
    }

}
